#pragma once

#include "common.hpp"

struct AA {
    void before(int i) {
        std::cout << "before from AA, " << i << std::endl;
    }

    void after(int i) {
        std::cout << "after from AA, " << i << std::endl;
    }
};


struct BB {
    void before(int i) {
        std::cout << "before from BB, " << i << std::endl;
    }
};


struct CC {
    void after(int i) {
        std::cout << "after from CC, " << i << std::endl;
    }
};


void GT() {
    std::cout << "void gt func" << std::endl;
}

void HT(int i) {
    std::cout << "int ht func: " << i << std::endl;
}

int aop();